package Review;



public class Test39 {
	
	public static void main(String[] args) {
		BinaryTreeNode node1=new BinaryTreeNode(1);
		BinaryTreeNode node2=new BinaryTreeNode(2);
		BinaryTreeNode node3=new BinaryTreeNode(3);
		BinaryTreeNode node4=new BinaryTreeNode(4);
		BinaryTreeNode node5=new BinaryTreeNode(5);
		BinaryTreeNode node6=new BinaryTreeNode(6);
		BinaryTreeNode node7=new BinaryTreeNode(7);
		node1.left=node2;
		node1.right=node3;
		node2.left=node4;
		node2.right=node5;
		node3.left=node6;
		node3.right=node7;
		node4.left=node4.right=null;
		node5.left=node4.right=null;
		node6.left=node4.right=null;
		node7.left=node4.right=null;
        System.out.println(TreeDepth(node1));
        System.out.println(getTreeDepth(node1));

	}
    public static int TreeDepth(BinaryTreeNode root){
    	if(root==null){
    		return 0;
    	}
    	int left = TreeDepth(root.left);
    	int right = TreeDepth(root.right);
    	return (left>right)?(left+1):(right+1);
    }
    
    public static int getTreeDepth(BinaryTreeNode root){
    	if(root == null){
    		return 0;
    	}
    	int left = getTreeDepth(root.left);
    	int right = getTreeDepth(root.right);
    	return ((left > right)?left:right) + 1;
    }
    
    public  boolean isBalanceBST(BinaryTreeNode root,Num depth){
    	if (root == null) {
    		depth.n = 0;
			return true;
		}
    	Num left = new Num();
    	Num right = new Num();
    	if (isBalanceBST(root.left, left) && isBalanceBST(root.right, right)) {
			int diff = Math.abs(left.n - right.n);
			if(diff <= 1){
				depth.n = (left.n > right.n)? left.n : right.n;
				return true;
			}
		}
    	return false;
    }
    private class Num{
		int n = 0;
	}
}
